workflow:
  rules:
    - if: $CI_MERGE_REQUEST_ID

default:
  image: ruby:3.0

before_script:
  - cd vendor/gems/sidekiq-reliable-fetch
  - ruby -v
  - which ruby
  - gem install bundler
  - bundle config set --local path 'vendor'      # Install dependencies into ./vendor/ruby
  - bundle config set with 'development'         # This is set to 'deployment' otherwise
  - bundle config set --local frozen 'true'      # Disallow Gemfile.lock changes on CI
  - bundle config                                # Show bundler configuration
  - bundle install --jobs $(nproc) "${FLAGS[@]}"

variables:
  REDIS_URL: "redis://redis"

rspec:
  stage: test
  coverage: '/LOC \((\d+\.\d+%)\) covered.$/'
  script:
    - bundle exec rspec
  services:
    - redis:alpine
  artifacts:
    expire_in: 31d
    when: always
    paths:
      - coverage/

.integration:
  stage: test
  script:
    - cd tests/reliability
    - bundle exec ruby reliability_test.rb
  services:
    - redis:alpine

integration_semi:
  extends: .integration
  variables:
    JOB_FETCHER: semi

integration_reliable:
  extends: .integration
  variables:
    JOB_FETCHER: reliable

integration_basic:
  extends: .integration
  allow_failure: yes
  variables:
    JOB_FETCHER: basic

kill_interruption:
  stage: test
  script:
    - cd tests/interruption
    - bundle exec ruby test_kill_signal.rb
  services:
    - redis:alpine

term_interruption:
  stage: test
  script:
    - cd tests/interruption
    - bundle exec ruby test_term_signal.rb
  services:
    - redis:alpine

# rubocop:
#   script:
#     - bundle exec rubocop
